home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Technology Seed / Mac Tech Seed Feb '96 / Mac Tech Seed Feb '96.toast / mac / Unicode Converter A15 / Headers / Unicode.h next >
Encoding:
C/C++ Source or Header  |  1995-11-15  |  18.4 KB  |  488 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Unicode.h
  3.  
  4.      Contains:    Unicode Interfaces.
  5.  
  6.      Version:    ETO
  7.  
  8.      DRI:        ulio Gonzalez
  9.  
  10.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            Sue Kuo
  17.                  With Interfacer:    1.1d13  
  18.                  From:                Unicode.i
  19.                      Revision:        34
  20.                      Dated:            11/13/95
  21.                      Last change by:    PKE
  22.                      Last comment:    #1301570: Rename kUnicodeUCS2Format to kISO10646UCS2Format,
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28.  
  29. #ifndef __UNICODE__
  30. #define __UNICODE__
  31.  
  32.  
  33. #ifndef __TYPES__
  34. #include <Types.h>
  35. #endif
  36. /*    #include <ConditionalMacros.h>                                */
  37.  
  38. #ifndef __MIXEDMODE__
  39. #include <MixedMode.h>
  40. #endif
  41.  
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45.  
  46. #if PRAGMA_ALIGN_SUPPORTED
  47. #pragma options align=mac68k
  48. #endif
  49.  
  50. #if PRAGMA_IMPORT_SUPPORTED
  51. #pragma import on
  52. #endif
  53.  
  54. typedef UInt8 *BytePtr;
  55.  
  56. typedef UInt32 ByteCount;
  57.  
  58. typedef UInt32 ItemCount;
  59.  
  60. typedef UInt32 OptionBits;
  61.  
  62. typedef short RegionCode;
  63.  
  64. typedef UInt32 ByteOffset;
  65.  
  66. typedef const void *ConstLogicalAddress;
  67.  
  68. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  69.  
  70. enum {
  71.     unicodeChecksumErr            = -8769,
  72.     unicodeNoTableErr            = -8768,
  73.     unicodeVariantErr            = -8767,
  74.     unicodeFallbacksErr            = -8766,
  75.     unicodePartConvertErr        = -8765,
  76.     unicodeBufErr                = -8764,
  77.     unicodeCharErr                = -8763,
  78.     unicodeElementErr            = -8762,
  79.     unicodeNotFoundErr            = -8761,
  80.     unicodeTableFormatErr        = -8760,
  81.     unicodeDirectionErr            = -8759,
  82.     unicodeContextualErr        = -8758,
  83.     unicodeTextEncodingDataErr    = -8757
  84. };
  85.  
  86. /* Unicode Converter Gestalt Constants: (••••these belong in Gestalt.i••••) */
  87. enum {
  88.     gestaltUnicodeAttr            = 'unic',
  89.     gestaltUnicodeConverterPresent = 0,
  90.     gestaltUnicodeConverterMask    = 1L << gestaltUnicodeConverterPresent
  91. };
  92.  
  93. /* Basic types for Unicode characters and strings: */
  94. typedef UniChar *UniCharArrayPtr;
  95.  
  96. typedef const UniChar *ConstUniCharArrayPtr;
  97.  
  98. /* Unicode conversion contexts: */
  99. typedef struct OpaqueTextToUnicodeInfo *TextToUnicodeInfo;
  100.  
  101. typedef const struct OpaqueTextToUnicodeInfo *ConstTextToUnicodeInfo;
  102.  
  103. typedef struct OpaqueUnicodeToTextInfo *UnicodeToTextInfo;
  104.  
  105. typedef const struct OpaqueUnicodeToTextInfo *ConstUnicodeToTextInfo;
  106.  
  107. typedef struct OpaqueUnicodeToTextRunInfo *UnicodeToTextRunInfo;
  108.  
  109. typedef UInt32 TextEncodingBase;
  110.  
  111.  
  112. enum {
  113. /* Mac OS encodings*/
  114.     kTextEncodingMacRoman        = 0L,
  115.     kTextEncodingMacJapanese,
  116.     kTextEncodingMacTradChinese,
  117.     kTextEncodingMacKorean,
  118.     kTextEncodingMacArabic,
  119.     kTextEncodingMacHebrew,
  120.     kTextEncodingMacGreek,
  121.     kTextEncodingMacCyrillic,
  122.     kTextEncodingMacRSymbol,
  123.     kTextEncodingMacDevanagari,
  124.     kTextEncodingMacGurmukhi,
  125.     kTextEncodingMacGujarati,
  126.     kTextEncodingMacOriya,
  127.     kTextEncodingMacBengali,
  128.     kTextEncodingMacTamil,
  129.     kTextEncodingMacTelugu,
  130.     kTextEncodingMacKannada,
  131.     kTextEncodingMacMalayalam,
  132.     kTextEncodingMacSinhalese,
  133.     kTextEncodingMacBurmese,
  134.     kTextEncodingMacKhmer,
  135.     kTextEncodingMacThai,
  136.     kTextEncodingMacLaotian,
  137.     kTextEncodingMacGeorgian,
  138.     kTextEncodingMacArmenian,
  139.     kTextEncodingMacSimpChinese,
  140.     kTextEncodingMacTibetan,
  141.     kTextEncodingMacMongolian,
  142.     kTextEncodingMacGeez,
  143.     kTextEncodingMacEastEurRoman = 29,
  144.     kTextEncodingMacCentralEurRoman = 29,
  145.     kTextEncodingMacVietnamese,
  146.     kTextEncodingMacExtArabic,
  147.     kTextEncodingMacUninterp,
  148.     kTextEncodingMacSymbol        = 33,
  149.     kTextEncodingMacDingbats    = 34,
  150.     kTextEncodingMacTurkish        = 35,
  151.     kTextEncodingMacCroatian    = 36,
  152.     kTextEncodingMacIcelandic    = 37,
  153.     kTextEncodingMacRomanian    = 38,
  154.     kTextEncodingMacUkrainian    = 152,
  155.     kTextEncodingMacBulgarian    = 153,
  156.     kTextEncodingMacHFS            = 0xFF,                            /* Meta-value, should never appear in a table.*/
  157. /* Unicode encodings begin at 0x100*/
  158.     kTextEncodingUnicodeDefault    = 0x100,                        /* Meta-value, should never appear in a table.*/
  159.     kTextEncodingUnicodeV1_1    = 0x101,
  160.     kTextEncodingISO10646_1993    = 0x102,                        /* can have UCS4 format (Unicode can't)*/
  161. /* Windows & MS-DOS encodings begin at 0x200*/
  162.     kTextEncodingWindowsLatin1    = 0x200,                        /* code page 1252*/
  163.     kTextEncodingWindowsANSI    = 0x200,                        /* code page 1252 (alternate name)*/
  164.     kTextEncodingWindowsLatin2    = 0x201,                        /* code page 1250, Central Europe*/
  165.     kTextEncodingWindowsCyrillic = 0x202,                        /* code page 1251, Slavic Cyrillic*/
  166.     kTextEncodingWindowsGreek    = 0x203,                        /* code page 1253*/
  167.     kTextEncodingWindowsLatin5    = 0x204,                        /* code page 1254, Turkish*/
  168.     kTextEncodingWindowsHebrew    = 0x205,                        /* code page 1255*/
  169.     kTextEncodingWindowsArabic    = 0x206,                        /* code page 1256*/
  170.     kTextEncodingWindowsBalticRim = 0x207,                        /* code page 1257*/
  171.     kTextEncodingDOSLatinUS        = 0x300,                        /* code page 437*/
  172.     kTextEncodingDOSRoman        = 0x300,                        /* code page 437 (alternate name, will go away soon)*/
  173.     kTextEncodingDOSArabicASMO    = 0x301,                        /* code page 708 (ASMO 708)*/
  174.     kTextEncodingDOSGreek        = 0x305,                        /* code page 737 (formerly code page 437G)*/
  175.     kTextEncodingDOSBalticRim    = 0x306,                        /* code page 775*/
  176.     kTextEncodingDOSLatin1        = 0x310,                        /* code page 850, "Multilingual"*/
  177.     kTextEncodingDOSGreek1        = 0x311,                        /* code page 851*/
  178.     kTextEncodingDOSLatin2        = 0x312,                        /* code page 852, Slavic*/
  179.     kTextEncodingDOSCyrillic    = 0x313,                        /* code page 855, IBM Cyrillic*/
  180.     kTextEncodingDOSTurkish        = 0x314,                        /* code page 857, IBM Turkish*/
  181.     kTextEncodingDOSPortuguese    = 0x315,                        /* code page 860*/
  182.     kTextEncodingDOSIcelandic    = 0x316,                        /* code page 861*/
  183.     kTextEncodingDOSHebrew        = 0x317,                        /* code page 862*/
  184.     kTextEncodingDOSCanadianFrench = 0x318,                        /* code page 863*/
  185.     kTextEncodingDOSArabic        = 0x319,                        /* code page 864*/
  186.     kTextEncodingDOSNordic        = 0x31A,                        /* code page 865*/
  187.     kTextEncodingDOSRussian        = 0x31B,                        /* code page 866*/
  188.     kTextEncodingDOSGreek2        = 0x31C,                        /* code page 869, IBM Modern Greek*/
  189.     kTextEncodingDOSThai        = 0x31D,                        /* code page 874, also used for Windows*/
  190.     kTextEncodingDOSJapanese    = 0x320,                        /* code page 932, also used for Windows*/
  191.     kTextEncodingDOSChineseSimplif = 0x321,                        /* code page 936, also used for Windows*/
  192.     kTextEncodingDOSKorean        = 0x322,                        /* code page 949, also used for Windows*/
  193.     kTextEncodingDOSChineseTrad    = 0x323,                        /* code page 950, also used for Windows*/
  194. /* Other ISO encodings begin at 0x800*/
  195.     kTextEncodingISOLatin1        = 0x801,                        /* ISO 8859-1*/
  196.     kTextEncodingISOLatin2        = 0x802,                        /* ISO 8859-2*/
  197.     kTextEncodingISOLatinCyrillic = 0x805,                        /* ISO 8859-5*/
  198.     kTextEncodingISOLatinArabic    = 0x806,                        /* ISO 8859-6*/
  199.     kTextEncodingISOLatinGreek    = 0x807,                        /* ISO 8859-7*/
  200.     kTextEncodingISOLatinHebrew    = 0x808,                        /* ISO 8859-8*/
  201.     kTextEncodingISOLatin5        = 0x809                            /* ISO 8859-9*/
  202. };
  203.  
  204. /* TextEncodingVariant type & values */
  205. typedef UInt32 TextEncodingVariant;
  206.  
  207.  
  208. enum {
  209. /* Default TextEncodingVariant, for any TextEncodingBase*/
  210.     kTextEncodingDefaultVariant    = 0,
  211. /* Variants of kTextEncodingMacJapanese*/
  212.     kJapaneseStandardVariant    = 0,
  213.     kJapaneseStdNoVerticalsVariant = 1,
  214.     kJapaneseBasicVariant        = 2,
  215.     kJapanesePostScriptScrnVariant = 3,
  216.     kJapanesePostScriptPrintVariant = 4,
  217.     kJapaneseVertAtKuPlusTenVariant = 5,
  218. /* Variants of kTextEncodingMacHebrew*/
  219.     kHebrewStandardVariant        = 0,
  220.     kHebrewFigureSpaceVariant    = 1,
  221. /* Variants of kTextEncodingUnicodeV1_1*/
  222.     kUnicodeNoSubset            = 0,
  223.     kUnicodeNoCompatibilityVariant = 1,
  224.     kUnicodeMaxDecomposedVariant = 2,
  225.     kUnicodeNoComposedVariant    = 3
  226. };
  227.  
  228. /* TextEncodingFormat type & values */
  229. typedef UInt32 TextEncodingFormat;
  230.  
  231.  
  232. enum {
  233. /* Default TextEncodingFormat for Any TextEncodingBase*/
  234.     kTextEncodingDefaultFormat    = 0,
  235. /* Formats for kTextEncodingUnicodeV1_1*/
  236.     kUnicode16BitFormat            = 0,
  237. /* Formats for kTextEncodingISO10646_1993*/
  238.     kISO10646UCS2Format            = 0
  239. };
  240.  
  241. /* TextEncoding type & values */
  242. typedef UInt32 TextEncoding;
  243.  
  244.  
  245. enum {
  246. /* TextEncoding used by HFS*/
  247.     kMacHFSTextEncoding            = 0x000000FF
  248. };
  249.  
  250. /* UnicodeMapVersion type & values */
  251. typedef SInt32 UnicodeMapVersion;
  252.  
  253.  
  254. enum {
  255.     kUnicodeUseLatestMapping    = -1
  256. };
  257.  
  258. /* Types used in conversion */
  259. typedef struct UnicodeMapping UnicodeMapping;
  260.  
  261. typedef UnicodeMapping *UnicodeMappingPtr;
  262.  
  263. typedef const UnicodeMapping *ConstUnicodeMappingPtr;
  264.  
  265. struct UnicodeMapping {
  266.     TextEncoding                    unicodeEncoding;
  267.     TextEncoding                    otherEncoding;
  268.     UnicodeMapVersion                mappingVersion;
  269. };
  270. typedef struct TextEncodingRun TextEncodingRun;
  271.  
  272. struct TextEncodingRun {
  273.     ByteOffset                        offset;
  274.     TextEncoding                    textEncoding;
  275. };
  276. /* Control flags for ConvertUnicodeToText and ConvertTextToUnicode */
  277.  
  278. enum {
  279.     kUnicodeUseFallbacksBit        = 0,
  280.     kUnicodeKeepInfoBit            = 1,
  281.     kUnicodeDirectionalityBits    = 2,
  282.     kUnicodeVerticalFormBit        = 4,
  283.     kUnicodeLooseMappingsBit    = 5,
  284.     kUnicodeStringUnterminatedBit = 6,
  285.     kUnicodeTextRunBit            = 7,
  286.     kUnicodeKeepSameEncodingBit    = 8
  287. };
  288.  
  289. enum {
  290.     kUnicodeUseFallbacksMask    = 1L << kUnicodeUseFallbacksBit,
  291.     kUnicodeKeepInfoMask        = 1L << kUnicodeKeepInfoBit,
  292.     kUnicodeDirectionalityMask    = 3L << kUnicodeDirectionalityBits,
  293.     kUnicodeVerticalFormMask    = 1L << kUnicodeVerticalFormBit,
  294.     kUnicodeLooseMappingsMask    = 1L << kUnicodeLooseMappingsBit,
  295.     kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,
  296.     kUnicodeTextRunMask            = 1L << kUnicodeTextRunBit,
  297.     kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit
  298. };
  299.  
  300. /* Values for kUnicodeDirectionality field */
  301. enum {
  302.     kUnicodeDefaultDirection,
  303.     kUnicodeLeftToRight,
  304.     kUnicodeRightToLeft
  305. };
  306.  
  307. /* Control flags for TruncateForUnicodeToText: */
  308. enum {
  309.     kUnicodeTextElementSafeBit    = 0,
  310.     kUnicodeRestartSafeBit        = 1
  311. };
  312.  
  313. enum {
  314.     kUnicodeTextElementSafeMask    = 1L << kUnicodeTextElementSafeBit,
  315.     kUnicodeRestartSafeMask        = 1L << kUnicodeRestartSafeBit
  316. };
  317.  
  318. /* Filter bits for QueryUnicodeMappings filter field: */
  319. enum {
  320.     kUnicodeMatchUnicodeBaseBit    = 0,
  321.     kUnicodeMatchUnicodeVariantBit = 1,
  322.     kUnicodeMatchUnicodeFormatBit = 2,
  323.     kUnicodeMatchOtherBaseBit    = 3,
  324.     kUnicodeMatchOtherVariantBit = 4,
  325.     kUnicodeMatchOtherFormatBit    = 5
  326. };
  327.  
  328. enum {
  329.     kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,
  330.     kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,
  331.     kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,
  332.     kUnicodeMatchOtherBaseMask    = 1L << kUnicodeMatchOtherBaseBit,
  333.     kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,
  334.     kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit
  335. };
  336.  
  337. /* enums for TextEncoding Conversion routines */
  338. enum {
  339.     kUnicodeScriptDontCare        = -128,
  340.     kUnicodeLanguageDontCare    = -128,
  341.     kUnicodeRegionDontCare        = -128
  342. };
  343.  
  344. /* Control flags for SetFallbackUnicodeToText */
  345. enum {
  346.     kUnicodeFallbackSequencingBits = 0
  347. };
  348.  
  349. enum {
  350.     kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits
  351. };
  352.  
  353. /* values for kUnicodeFallbackSequencing field */
  354. enum {
  355.     kUnicodeFallbackDefaultOnly    = 0L,
  356.     kUnicodeFallbackCustomOnly,
  357.     kUnicodeFallbackDefaultFirst,
  358.     kUnicodeFallbackCustomFirst
  359. };
  360.  
  361. #endif
  362. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  363. typedef pascal OSStatus (*UnicodeToTextFallbackProcPtr)(UniChar *srcUniStr, ByteCount srcUniStrLen, ByteCount *srcConvLen, BytePtr destStr, ByteCount destStrLen, ByteCount *destConvLen, LogicalAddress contextPtr);
  364.  
  365. #if GENERATINGCFM
  366. typedef UniversalProcPtr UnicodeToTextFallbackUPP;
  367. #else
  368. typedef UnicodeToTextFallbackProcPtr UnicodeToTextFallbackUPP;
  369. #endif
  370.  
  371. enum {
  372.     uppUnicodeToTextFallbackProcInfo = kPascalStackBased
  373.          | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  374.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UniChar*)))
  375.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ByteCount)))
  376.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ByteCount*)))
  377.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(BytePtr)))
  378.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(ByteCount)))
  379.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(ByteCount*)))
  380.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(LogicalAddress)))
  381. };
  382.  
  383. #if GENERATINGCFM
  384. #define NewUnicodeToTextFallbackProc(userRoutine)        \
  385.         (UnicodeToTextFallbackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppUnicodeToTextFallbackProcInfo, GetCurrentArchitecture())
  386. #else
  387. #define NewUnicodeToTextFallbackProc(userRoutine)        \
  388.         ((UnicodeToTextFallbackUPP) (userRoutine))
  389. #endif
  390.  
  391. #if GENERATINGCFM
  392. #define CallUnicodeToTextFallbackProc(userRoutine, srcUniStr, srcUniStrLen, srcConvLen, destStr, destStrLen, destConvLen, contextPtr)        \
  393.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppUnicodeToTextFallbackProcInfo, (srcUniStr), (srcUniStrLen), (srcConvLen), (destStr), (destStrLen), (destConvLen), (contextPtr))
  394. #else
  395. #define CallUnicodeToTextFallbackProc(userRoutine, srcUniStr, srcUniStrLen, srcConvLen, destStr, destStrLen, destConvLen, contextPtr)        \
  396.         (*(userRoutine))((srcUniStr), (srcUniStrLen), (srcConvLen), (destStr), (destStrLen), (destConvLen), (contextPtr))
  397. #endif
  398.  
  399. #endif
  400. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  401. extern pascal TextEncoding CreateTextEncoding(TextEncodingBase encodingBase, TextEncodingVariant encodingVariant, TextEncodingFormat encodingFormat)
  402.  THREEWORDINLINE(0x303C, 0x0615, 0xABCE);
  403. /* Retrieve TextEncodingBase from TextEncoding */
  404. extern pascal TextEncodingBase GetTextEncodingBase(TextEncoding encoding)
  405.  THREEWORDINLINE(0x303C, 0x0216, 0xABCE);
  406. /* Retrieve TextEncodingVariant from TextEncoding */
  407. extern pascal TextEncodingVariant GetTextEncodingVariant(TextEncoding encoding)
  408.  THREEWORDINLINE(0x303C, 0x0217, 0xABCE);
  409. /* Retrieve TextEncodingFormat from TextEncoding */
  410. extern pascal TextEncodingFormat GetTextEncodingFormat(TextEncoding encoding)
  411.  THREEWORDINLINE(0x303C, 0x0218, 0xABCE);
  412. /* Create a new TextToUnicodeInfo structure. */
  413. extern pascal OSStatus CreateTextToUnicodeInfo(ConstUnicodeMappingPtr UnicodeMapping, TextToUnicodeInfo *textToUnicodeInfo)
  414.  THREEWORDINLINE(0x303C, 0x0401, 0xABCE);
  415. /* Create a new UnicodeToTextInfo structure. */
  416. extern pascal OSStatus CreateUnicodeToTextInfo(ConstUnicodeMappingPtr UnicodeMapping, UnicodeToTextInfo *unicodeToTextInfo)
  417.  THREEWORDINLINE(0x303C, 0x040C, 0xABCE);
  418. extern pascal OSStatus CreateUnicodeToTextRunInfo(ItemCount numberOfMappings, ConstUnicodeMappingPtr UnicodeMapping, UnicodeToTextRunInfo *unicodeToTextInfo)
  419.  THREEWORDINLINE(0x303C, 0x0612, 0xABCE);
  420. /* Dispose of a TextToUnicodeInfo structure. */
  421. extern pascal OSStatus DisposeTextToUnicodeInfo(TextToUnicodeInfo *textToUnicodeInfo)
  422.  THREEWORDINLINE(0x303C, 0x0202, 0xABCE);
  423. /* Dispose of a UnicodeToTextInfo structure. */
  424. extern pascal OSStatus DisposeUnicodeToTextInfo(UnicodeToTextInfo *unicodeToTextInfo)
  425.  THREEWORDINLINE(0x303C, 0x020D, 0xABCE);
  426. extern pascal OSStatus DisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo *unicodeToTextInfo)
  427.  THREEWORDINLINE(0x303C, 0x0213, 0xABCE);
  428. /* Convert a string to Unicode. */
  429. extern pascal OSStatus ConvertTextToUnicode(TextToUnicodeInfo textToUnicodeInfo, ByteCount sourceLen, ConstLogicalAddress sourceStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *sourceRead, ByteCount *unicodeLen, UniCharArrayPtr unicodeStr)
  430.  THREEWORDINLINE(0x303C, 0x1404, 0xABCE);
  431. /* Convert a string from Unicode. */
  432. extern pascal OSStatus ConvertUnicodeToText(UnicodeToTextInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *inputRead, ByteCount *outputLen, LogicalAddress outputStr)
  433.  THREEWORDINLINE(0x303C, 0x1403, 0xABCE);
  434. extern pascal OSStatus ConvertUnicodeToTextRun(UnicodeToTextRunInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *inputRead, ByteCount *outputLen, LogicalAddress outputStr, ItemCount encodingRunBufLen, ItemCount *encodingRunOutLen, TextEncodingRun *encodingRuns)
  435.  THREEWORDINLINE(0x303C, 0x1A14, 0xABCE);
  436. /* Truncate a multibyte string at a safe place. */
  437. extern pascal OSStatus TruncateForTextToUnicode(ConstTextToUnicodeInfo textToUnicodeInfo, ByteCount sourceLen, ConstLogicalAddress sourceStr, ByteCount maxLen, ByteCount *truncatedLen)
  438.  THREEWORDINLINE(0x303C, 0x0A06, 0xABCE);
  439. /* Truncate a Unicode string at a safe place. */
  440. extern pascal OSStatus TruncateForUnicodeToText(ConstUnicodeToTextInfo unicodeToTextInfo, ByteCount sourceLen, ConstUniCharArrayPtr sourceStr, OptionBits controlFlags, ByteCount maxLen, ByteCount *truncatedLen)
  441.  THREEWORDINLINE(0x303C, 0x0C05, 0xABCE);
  442. /* Convert a Pascal string to Unicode. */
  443. extern pascal OSStatus ConvertPStringToUnicode(TextToUnicodeInfo textToUnicodeInfo, ConstStr255Param pascalStr, ByteCount bufLen, ByteCount *unicodeLen, UniCharArrayPtr unicodeStr)
  444.  THREEWORDINLINE(0x303C, 0x0A08, 0xABCE);
  445. /* Convert a Unicode string to Pascal. */
  446. extern pascal OSStatus ConvertUnicodeToPString(UnicodeToTextInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, Str255 pascalStr)
  447.  THREEWORDINLINE(0x303C, 0x0807, 0xABCE);
  448. /* Get a list of the available conversion mappings. */
  449. extern pascal OSStatus QueryUnicodeMappings(OptionBits filter, UnicodeMappingPtr findMapping, ItemCount maxCount, ItemCount *actualCount, UnicodeMappingPtr returnedMappings)
  450.  THREEWORDINLINE(0x303C, 0x0A09, 0xABCE);
  451. /* Get the name of a TextEncodingBase table. */
  452. extern pascal OSStatus GetTextEncodingBaseName(ConstUnicodeMappingPtr UnicodeMapping, LangCode languageID, ByteCount bufLen, ByteCount *nameLength, UniCharArrayPtr mappingName)
  453.  THREEWORDINLINE(0x303C, 0x090A, 0xABCE);
  454. /* Change the TextToUnicodeInfo to another mapping. */
  455. extern pascal OSStatus ChangeTextToUnicodeInfo(TextToUnicodeInfo textToUnicodeInfo, ConstUnicodeMappingPtr UnicodeMapping)
  456.  THREEWORDINLINE(0x303C, 0x040B, 0xABCE);
  457. /* Change the UnicodeToTextInfo to another mapping. */
  458. extern pascal OSStatus ChangeUnicodeToTextInfo(UnicodeToTextInfo unicodeToTextInfo, ConstUnicodeMappingPtr UnicodeMapping)
  459.  THREEWORDINLINE(0x303C, 0x040E, 0xABCE);
  460. #endif
  461. #if FOR_SYSTEM8_PREEMPTIVE
  462. #endif
  463. #if FOR_SYSTEM7_ONLY
  464. extern pascal OSStatus SetFallbackUnicodeToText(UnicodeToTextInfo unicodeToTextInfo, UnicodeToTextFallbackUPP fallback, OptionBits controlFlags, LogicalAddress infoPtr)
  465.  THREEWORDINLINE(0x303C, 0x080F, 0xABCE);
  466. #endif
  467. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  468. extern pascal OSStatus UpgradeScriptInfoToTextEncoding(ScriptCode textScriptID, LangCode textLanguageID, RegionCode regionID, ConstStr255Param textFontname, TextEncoding *encoding)
  469.  THREEWORDINLINE(0x303C, 0x0710, 0xABCE);
  470. /* Convert a TextEncoding to script, language (if possible) and fontname (if necessary; for Symbol & Dingbats only ) */
  471. extern pascal OSStatus RevertTextEncodingToScriptInfo(TextEncoding encoding, ScriptCode *textScriptID, LangCode *textLanguageID, Str255 textFontname)
  472.  THREEWORDINLINE(0x303C, 0x0811, 0xABCE);
  473. #endif
  474.  
  475. #if PRAGMA_IMPORT_SUPPORTED
  476. #pragma import off
  477. #endif
  478.  
  479. #if PRAGMA_ALIGN_SUPPORTED
  480. #pragma options align=reset
  481. #endif
  482.  
  483. #ifdef __cplusplus
  484. }
  485. #endif
  486.  
  487. #endif /* __UNICODE__ */
  488.